
 /**
 * 上海中赢金融信息服务有限公司
 * Copyright (c) 2017-2027 Chinazyjr,Inc.All Rights Reserved.
 */
package com.sys.midware.redis.core.operation;

import java.util.Collection;
import java.util.List;
import java.util.Map;
import java.util.Set;

/**
 * <b>Description：</b> TODO <br/>
 * <b>ClassName：</b> HashOperations <br/>
 * <b>@author：</b> jackyshang <br/>
 * <b>@date：</b> 2016年8月22日 下午4:00:28 <br/>
 * <b>@version: </b>  <br/>
 */
public interface HashOperations {
    /**
     * 设置某个map的键值
     * put <br/> 
     * @param key
     * @param hashKey
     * @param value  void <br/>
     */
    public <H,HK,HV> void put(H key, HK hashKey, HV value);
    /**
     * 设置map
     * putAll <br/> 
     * @param key
     * @param m  void <br/>
     */
    public <H,HK,HV> void putAll(H key, Map<? extends HK, ? extends HV> m);
    /**
     * 根据map中的键删除
     * delete <br/> 
     * @param key
     * @param hashKeys  void <br/>
     */
    public <H> void delete(H key, Object... hashKeys);
    /**
     * 是否包含键
     * hasKey <br/> 
     * @param key
     * @param hashKey
     * @return  Boolean <br/>
     */
    public <H> Boolean hasKey(H key, Object hashKey);
    /**
     * 获取某个键的值
     * get <br/> 
     * @param key
     * @param hashKey
     * @return  HV <br/>
     */
    public <H,HV> HV get(H key, Object hashKey);
    /**
     * 获取map键值对
     * entries <br/> 
     * @param key
     * @return  Map<HK,HV> <br/>
     */
    public <H,HK,HV> Map<HK, HV> getMap(H key);
    /**
     * 根据多个键取多个值
     * multiGet <br/> 
     * @param key
     * @param hashKeys
     * @return  List<HV> <br/>
     */
    public <H,HK,HV> List<HV> getByKeys(H key, Collection<HK> hashKeys);
    /**
     * 获取map中的所有键
     * keys <br/> 
     * @param key
     * @return  Set<HK> <br/>
     */
    public <H,HK> Set<HK> getAllKeys(H key);
    /**
     * 获取map中的所有值
     * values <br/> 
     * @param key
     * @return  List<HV> <br/>
     */
    public <H,HV> List<HV> getAllValues(H key);
    /**
     * 获取map元素的个数
     * size <br/> 
     * @param key
     * @return  Long <br/>
     */
    public <H>  int size(H key);
 

    
    
}
